home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib03.dsk
/
AMPER-READER DEMO.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
3KB
|
100 lines
5 REM "AMPER-READER" DEMO
15 GOSUB 5000
25 GOTO 1000
35 REM LIST RECORDS
45 HOME
55 FOR I = 1 TO NR%
65 PRINT ST$(I)
75 IF PEEK( -16384) >127 THEN POKE -16368,0: WAIT -16384,128: POKE -16368,0
85 NEXT I
95 RETURN
100 REM CREATE A TEXT FILE
110 GOSUB 8000
120 UL = UL -10
130 HOME : VTAB 10: PRINT "HOW MANY RECORDS DO YOU WANT TO CREATE?": PRINT "(1 - ";UL;" )"
140 INPUT NR
150 IF NR <1 OR NR >UL THEN 130
160 BA$ = "THIS IS RECORD NUMBER:"
170 PRINT D$;"OPEN ";FI$
180 PRINT D$;"DELETE ";FI$
190 PRINT D$;"OPEN ";FI$
200 PRINT D$;"WRITE ";FI$
210 FOR I = 1 TO NR
220 PRINT BA$ + STR$(I)
230 NEXT I
240 PRINT D$;"CLOSE"
250 GOTO 1000
500 REM READ AND LIST RECORDS...
510 HOME : VTAB 10: HTAB 10: PRINT "OPTIONS"
520 VTAB 14: PRINT "1 READ ALL RECORDS"
530 PRINT "2 READ BLOCKS OF RECORDS"
540 PRINT "3 RETURN TO MAIN MENU"
550 VTAB 20: INPUT "OPTION: ";OP
560 IF OP <1 OR OP >3 THEN 510
570 ON OP GOTO 600,800,1000
600 REM READ ALL RECORDS INTO MEMORY
620 DIM ST$(UL)
630 NR% = 0: REM READ TO EOF
640 ER% = 0: REM DEFINE ER% VARIABLE
650 REM INVOKE AMPER-READ...
660 & R(FI$,ST$(1),NR%,ER%)
670 IF ER% < >5 THEN 3000
680 GOSUB 35: REM LIST RECORDS
690 PRINT : PRINT NR%;" RECORDS READ"
700 GOSUB 7000
710 & D(ST$(0))
720 GOTO 500
800 REM BLOCK OF DATA...
805 HOME
810 VTAB 10: INPUT "HOW MANY RECORDS PER BLOCK TO READ? ";NR%
815 IF NR% <1 THEN 805
820 GOSUB 8000
825 DIM ST$(UL)
830 ER% = 0
835 REM INVOKE AMPER-READ
840 & R(FI$,ST$(1),NR%,ER%)
845 ON ER% GOTO 3000,3000,3000,3000,850
850 GOSUB 35: REM LIST BLOCK
855 IF ER% = 5 THEN 895
860 GOSUB 7000
865 REM REMOVE LAST BLOCK
870 & D(ST$(0)): REM DE-ALLOCATE ST$
875 X = FRE(0): REM RESET POINTERS
880 DIM ST$(UL): REM RE-DIMENSION ST$
885 & C(FI$,ST$(1),NR%,ER%): REM CONTINUE READING
890 GOTO 845
895 PRINT "ALL RECORDS HAVE BEEN READ": GOSUB 7000
900 & D(ST$(0)): GOTO 500
1000 REM MENU
1010 TEXT : HOME
1020 VTAB 10: HTAB 10: PRINT "AMPER-READER DEMO"
1030 PRINT : HTAB 15: PRINT "MENU": PRINT
1040 PRINT "1 CREATE A TEXT FILE"
1050 PRINT "2 READ AND LIST THE FILE"
1060 PRINT "3 EXIT"
1070 VTAB 20: INPUT "OPTION: ";OP
1080 IF OP <1 OR OP >3 THEN 1070
1090 ON OP GOTO 100,500,9999
3000 REM ER% ERROR ROUTINE....
3010 PRINT EM$(ER%);" ERROR"
3020 END
5000 REM HOUSEKEEPING
5010 HIMEM: 36864
5020 POKE 1013,76: POKE 1014,0: POKE 1015,147: REM SET UP '&' VECTOR
5030 D$ = CHR$(4)
5040 IF PEEK(37632) = 72 THEN 5060: REM IS AMPER-READ LOADED
5050 PRINT D$;"BLOADAMPER-READER,A$9300"
5060 FI$ = "AMPER-READER.FILE"
5070 DIM EM$(5)
5080 EM$(1) = "OUT OF MEMORY"
5090 EM$(2) = "FILE " +FI$ +" NOT FOUND"
5100 EM$(3) = "DISK READ "
5110 RETURN
7000 REM DELAY...
7010 INPUT "PRESS RETURN TO CONTINUE ";A$
7020 RETURN
8000 REM HOW MANY 30 CHAR STRINGS WILL FIT IN RAM...
8010 X = FRE(0): IF X <0 THEN X = X +65535
8020 UL = INT(X/30)
8030 RETURN
9999 END